<h2>memory_object_attr_info</h2>
<hr>
<p>
<strong>Structure</strong> - Specifies memory object's behavior attributes.
<h3>SYNOPSIS</h3>
<pre>
<strong>struct  memory_object_attr_info</strong>
<strong>{</strong>
        <strong>memory_object_copy_strategy_t</strong>    <var>copy_strategy</var><strong>;</strong>
        <strong>vm_offset_t</strong>                       <var>cluster_size</var><strong>;</strong>
        <strong>boolean_t</strong>                            <var>may_cache</var><strong>;</strong>
        <strong>boolean_t</strong>                            <var>temporary</var><strong>;</strong>
<strong>};</strong>

<strong>typedef struct memory_object_attr_info* memory_object_attr_info_t;</strong>
</pre>
<h3>FIELDS</h3>
<dl>
<dt> <var>copy_strategy</var>
<dd>
How the kernel should handle copying of regions associated with the 
memory object.  The copy strategy cannot be changed once an object is 
initialized.  Valid values are:
<dl>
<p>
<dt> <strong>MEMORY_OBJECT_COPY_NONE</strong>
<dd>
Use normal procedure when copying the memory object's 
data.  Normally, the kernel requests each page with read
access, copies the data, and then (optionally) flushes the data.
<p>
<dt> <strong>MEMORY_OBJECT_COPY_CALL</strong>
<dd>
Call the memory manager when a copy operation is necessary.
<p>
<dt> <strong>MEMORY_OBJECT_COPY_DELAY</strong>
<dd>
Use copy-on-write technique.  This strategy allows the kernel 
to efficiently copy large amounts of data and guarantees that 
the memory manager will not externally modify the data.  It is 
the most commonly used copy strategy.
<p>
<dt> <strong>MEMORY_OBJECT_COPY_TEMPORARY</strong>
<dd>
All changes are made in memory and the memory manager does not need
to see them.
<p>
<dt> <strong>MEMORY_OBJECT_COPY_SYMMETRIC</strong>
<dd>
The memory manager does not change the data, does not need to see
any changes to the data, and will prevent the object from being
mapped more than once.  Currently, this strategy should be restricted
to use by the kernel.
</dl>
<p>
<dt> <var>cluster_size</var>
<dd>
The memory object's perferred cluster size (in bytes).  This value may affect
the number of pages transferred in a given paging operation.
<p>
<dt> <var>may_cache</var>
<dd>
Cache indicator.  If true, the kernel can cache data associated with the 
memory object (keep the memory object active) even if no virtual 
memory references to it remain.
<p>
<dt> <var>temporary</var>
<dd>
If TRUE, when the last mapping to the object is released,
the kernel destroys the object without returning any resident pages.
</dl>
<h3>DESCRIPTION</h3>
<p>
The <strong>memory_object_attr_info</strong> structure defines behavior and
performance relevant memory object attributes.
<h3>RELATED INFORMATION</h3>
<p>
Functions:
<a href="MO_get_attributes.html"><strong>memory_object_get_attributes</strong></a>,
<a href="MO_change_attributes.html"><strong>memory_object_change_attributes</strong></a>,
<a href="vm_region.html"><strong>vm_region</strong></a>,
<a href="memory_object_synchronize.html"><strong>memory_object_synchronize</strong></a>,
<a href="VSD_memory_manager.html"><strong>vm_set_default_memory_manager</strong></a>,
<a href="vm_msync.html"><strong>vm_msync</strong></a>.
